package com.rub.android.jetpack

import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.work.*
import com.rub.android.R
import com.rub.android.jetpack.model.MyWork
import java.time.Duration


/**
 * 学习博客： https://blog.csdn.net/qq_15988951/article/details/105867817
 */
class WorkManagerActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_work_manager)
    }

    fun submitTask(view: View) {
        //添加约束
        var constraints = Constraints.Builder()
            .setRequiredNetworkType(NetworkType.NOT_REQUIRED)
           /* //设备存储空间充足的时候 才能执行 ,>15%
            .setRequiresStorageNotLow(true)
            //设备的充电量充足的才能执行 >15%
            .setRequiresBatteryNotLow(true)
            //只有设备在充电的情况下 才能允许执行
            .setRequiresCharging(true)
            //只有设备在空闲的情况下才能被执行 比如息屏，cpu利用率不高
            .setRequiresDeviceIdle(true)
            //workmanager利用contentObserver监控传递进来的这个uri对应的内容是否发生变化,当且仅当它发生变化了
            .setTriggerContentUpdateDelay(Duration.ofMillis(0))
            //设置从content变化到被执行中间的最大延迟时间  这个content就是指 我们设置的.setContentUriTriggers uri对应的内容
            .setTriggerContentMaxDelay(Duration.ofMillis(0))*/
            .build()

        //一次性任务
        var oneTimeWorkRequest = OneTimeWorkRequest.Builder(MyWork::class.java)
            .setConstraints(constraints)
            .build()

        var workManager = WorkManager.getInstance(this)

        workManager.enqueue(oneTimeWorkRequest)

    }
}